Computer networks are a principal means of exchanging or transferring information (e.g. data, voice, text, video, etc.) among host machines connected to the network. The network comprises nodes connected, to each other and to the hosts, by links. Typically, each link is bidirectional, i.e. information may be conveyed in forward and reverse directions, and each link is characterized by a bandwidth capacity in each direction.
An important consideration in network operation is how the information is routed. When information is to be exchanged between two particular hosts, a bidirectional path is established in the network between them. Typically, the path that is established is a so-called "virtual circuit" (VC), by which it is meant that a host simply specifies the destination for the information, and the network delivers the information as though a circuit is connected to the destination. One of many different routes and techniques could be selected to deliver the information, but the particular selection is of no concern to the host. The task of routing is to select the nodes and links between the nodes that comprise the path taken by the VC so as to efficiently utilize network resources, e.g. route as many VCs as possible without exceeding the bandwidth capacity of any particular link. This is often achieved by selecting a path so as to minimize some cost function that reflects the amount of network resources required by the selected path. Although a variety of cost functions can be used, cost functions typically take into account the current network state (i.e., the network topology and current allocation of network resources), delay through the network, etc. Importantly, the routing problem is often further complicated in that the routing must be effectuated "on-line," i.e. without knowledge of what effect future routing demands will have on network resources. Although this problem may be solved by so-called "dynamic-rerouting" techniques, these techniques typically adversely affect the quality of service offered to users of the network.
Many techniques for routing VCs have been suggested. One such technique is minimum hop routing in which the path going through the smallest number of nodes is selected. Another techniques that has been suggested employs exponential cost functions and scaling, has been suggested. See, J. Aspnes et al., "On-Line Load Balancing with Applications to Machine Scheduling and Virtual Circuit Routing," Proc. 23rd Annual Symp. on Theory of Computing, San Diego, Calif., May 1993. In the scaling technique, a portion .gamma. of the bandwidth capacity of each link is initially allocated, and a cost function is computed for routing a path given that allocated bandwidth. When routing can no longer be achieved in the network with that allocated bandwidth, more bandwidth can be allocated, i.e. .gamma. is increased. Typically, the function for determining the cost for a given link in a path for the requested VC is C.sub..iota. (.chi.,.DELTA..chi.)=.alpha..sup..gamma..chi..sbsp..iota..sup.+.gamma..DEL TA..chi..sbsp..iota. -.alpha..sup..gamma..chi..sbsp..iota. where C.sub..iota. (.chi.,.DELTA..chi.) is the cost for link .iota. in the path, .alpha. is a constant, .chi..sub..iota. is the fraction of the bandwidth capacity of the link that is in use and .DELTA..chi..sub..iota. is the fraction of the bandwidth capacity of the link that is requested by the VC.